package com.netease.premissionstudy;

import android.Manifest;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.netease.premissionstudy.permission.annotation.Permission;
import com.netease.premissionstudy.permission.annotation.PermissionCancel;
import com.netease.premissionstudy.permission.annotation.PermissionDenied;

/**
 * TODO 用户的角度上  use 我们写的权限申请库
 * 用户只需要关心注解，就行了
 */
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 传统方式 很多框架
        /*xxxx(this);
        xxxx(this);
        dagger(this);*/

        // 不交出去 this，也要做到 ，实际上是做不到 ， aspectJ能做到
        // 我们为什么不交出去了，是为了减少代码入侵


        // this ----》 引擎 --- APT生成代码 放射交换...
    }

    public void test(View view) {}

    // 点击事件
    public void permissionRequestTest(View view) {
        testRequest();
    }

    // 申请权限  函数名可以随意些
    @Permission(value = Manifest.permission.READ_EXTERNAL_STORAGE, requestCode = 200)
    public void testRequest() {
        // 增加代码  增加他的字节码 是为了他自己的控制
        Toast.makeText(this, "权限申请成功...", Toast.LENGTH_SHORT).show();
        // 增加代码  增加他的字节码 是为了他自己的控制

        return; // end == proceed
    }

    // 权限被取消  函数名可以随意些
    @PermissionCancel
    public void testCancel() {
        Toast.makeText(this, "权限被拒绝", Toast.LENGTH_SHORT).show();
    }

    // 多次拒绝，还勾选了“不再提示”
    @PermissionDenied
    public void testDenied() {
        Toast.makeText(this, "权限被拒绝(用户勾选了 不再提示)", Toast.LENGTH_SHORT).show();
    }
}
